package com.mujin.keji.collectionsystem.module.mypager.viewmodel;

import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.ViewModel;

import com.mujin.keji.collectionsystem.base.BaseDto;
import com.mujin.keji.collectionsystem.module.message.vo.MsgVo;
import com.mujin.keji.collectionsystem.module.mypager.dto.UpdateUserDto;
import com.mujin.keji.collectionsystem.module.mypager.dto.UserInfoDto;
import com.mujin.keji.collectionsystem.module.mypager.repository.IMsgRepository;
import com.mujin.keji.collectionsystem.module.mypager.repository.IUpdateImgRepository;
import com.mujin.keji.collectionsystem.module.mypager.repository.IUpdateUserRepository;
import com.mujin.keji.collectionsystem.module.mypager.repository.IUserInfoRepository;
import com.mujin.keji.collectionsystem.module.mypager.repository.MsgRepository;
import com.mujin.keji.collectionsystem.module.mypager.repository.UpdateImgRepository;
import com.mujin.keji.collectionsystem.module.mypager.repository.UpdateUserRepository;
import com.mujin.keji.collectionsystem.module.mypager.repository.UserInfoRepository;
import com.mujin.keji.collectionsystem.module.mypager.vo.GetMsgVo;
import com.mujin.keji.collectionsystem.module.mypager.vo.UpdateUserVo;
import com.mujin.keji.collectionsystem.module.mypager.vo.UserInfoVo;

import java.io.File;
import java.util.List;

/**
 * 修改用户 viewmodel
 *
 * @author weishixiong
 * @Time 2018-05-9
 */
public class UserViewModel extends ViewModel {
    private LiveData<BaseDto<UpdateUserDto>> liveData;
    private LiveData<BaseDto<String>> imageLiveData;
    private LiveData<BaseDto<UserInfoDto>> userLiveData;
    private LiveData<BaseDto<String>> msgLiveData;
    private IUpdateUserRepository updateUserRepository;
    private IUpdateImgRepository updateImgRepository;
    private IUserInfoRepository userInfoRepository;


    /**
     * 获取短信验证码
     *
     * @param mobile
     * @return
     */
    public LiveData<BaseDto<String>> getMsgLiveData(String mobile) {
        IMsgRepository msgRepository = new MsgRepository();
        GetMsgVo vo = new GetMsgVo();
        vo.setMobile(mobile);
        this.msgLiveData = msgRepository.sendSms(vo);
        return msgLiveData;
    }

    /**
     * 更改用户信息
     *
     * @param sex
     * @param telephone
     * @return
     */
    public LiveData<BaseDto<UpdateUserDto>> getLiveData(String sex, String telephone) {
        update(sex, telephone);
        return liveData;
    }

    /**
     * 修改用户信息
     *
     * @param sex
     * @param telephone
     */
    private void update(String sex, String telephone) {
        updateUserRepository = new UpdateUserRepository();
        UpdateUserVo vo = new UpdateUserVo(sex, telephone);
        this.liveData = updateUserRepository.update(vo);
    }

    /**
     * 修改用户头像
     *
     * @param files
     * @return
     */
    public LiveData<BaseDto<String>> updateImage(List<File> files) {
        updateHead(files);
        return imageLiveData;
    }

    /**
     * 修改用户头像
     *
     * @param files
     */
    private void updateHead(List<File> files) {
        updateImgRepository = new UpdateImgRepository();
        this.imageLiveData = updateImgRepository.updateImg(files);
    }

    /**
     * 查询用户信息
     *
     * @param
     * @return
     */
    public LiveData<BaseDto<UserInfoDto>> queryUserInfo() {
        userInfoRepository = new UserInfoRepository();
        this.userLiveData = userInfoRepository.queryUserInfo(new UserInfoVo());
        return userLiveData;
    }


}
